<?php

class FilterHtmlFlagBehavior extends Behavior {
    public function run(&$html) {
        require_once(THINK_PATH . 'Extend/Tool/simple_html_dom.php');

        $user = C('RUN_LOGIN_USER');
        $role = $user['type'];
        $a = str_get_html($html);

        /**
         * html标签中可加入hide,clear属性
         * hide,clear对应的值为会员的type属性值，可以是单值或多个值，多个值之间用逗号分隔
         * hide表示需要隐藏的项目，加入此属性后生成的html中没有相应的标签
         * clear表示需要清空值的项目，加入此属性后生成的html中相应的标签中的值被清空
         *
         * hide='5'   hide='5,2'
         */
        $b = $a->find('[hide],[clear]');
        $r = array();
        $n = array();

        foreach($b as $v) {
            if($v->hide && in_array($role, explode(',', $v->hide))) {
                $r[] = $v;
                $n[] = '';
            }

            if($v->clear && in_array($role, explode(',', $v->clear))) {
                $r[] = $v;
                $n[] = str_replace($v->innertext, '', $v);
            }
        }

        if(empty($r) || empty($n)) {
            return $html;
        }

        $html = str_replace($r, $n, $html);
    }
}
